import UIKit

@available(iOS 9.0, *)
extension QKC where AA :UIDynamicItemGroup {
    open func items_qk_g() -> QKC<AA,YY,ZZ, [UIDynamicItem] >{
		 self +^ self.value.items
	}

}

@available(iOS 7.0, *)
extension QKC where AA :UIDynamicBehavior {
    open func childBehaviors_qk_g() -> QKC<AA,YY,ZZ, [UIDynamicBehavior] >{
		 self +^ self.value.childBehaviors
	}

	// When running, the dynamic animator calls the action block on every animation step.
    open func action_qk_s(_ action:  (() -> Void)?) -> QKC<AA,YY,ZZ, (() -> Void)?>{
		return link(next: action).then_QK { $0.value.action = action }
	}
    open func action_qk_g() -> QKC<AA,YY,ZZ, (() -> Void)?>{
		 self +^ self.value.action
	}

    open func dynamicAnimator_qk_g() -> QKC<AA,YY,ZZ, UIDynamicAnimator? >{
		 self +^ self.value.dynamicAnimator
	}

    open func addChildBehavior_qk_f(_ behavior: UIDynamicBehavior) -> QKC<AA,YY,ZZ, UIDynamicBehavior>{
		 self +^ self.value.addChildBehavior(behavior) +^ behavior
	}

    open func removeChildBehavior_qk_f(_ behavior: UIDynamicBehavior) -> QKC<AA,YY,ZZ, UIDynamicBehavior>{
		 self +^ self.value.removeChildBehavior(behavior) +^ behavior
	}

		// nil when being removed from an animator
    open func willMove_qk_f(to dynamicAnimator: UIDynamicAnimator?) -> QKC<AA,YY,ZZ, UIDynamicAnimator?>{
		 self +^ self.value.willMove(to:dynamicAnimator) +^ dynamicAnimator
	}

}

